// src/utils/http.js
import axios from 'axios';
import {EventBus} from "@/utils/event-bus";

const http = axios.create({
    baseURL: 'http://localhost:1122', // 假设你的后端API路径前缀是/api
    timeout: 10000
});

// 假设你有一个从本地存储或VueX等获取Token的函数
const getToken = () => {
    // 这里应该是获取存储在localStorage或sessionStorage中的Token
    return localStorage.getItem('userToken') || '';
};

// 添加请求拦截器
http.interceptors.request.use(config => {
    // 在发送请求之前做配置的修改
    const token = getToken(); // 获取Token
    console.log(token);
    if (token) {
        config.headers['Authorization'] = `Bearer ${token}`; // 假设后端接受Bearer Token
    }
    return config;
}, error => {
    // 处理请求错误
    return Promise.reject(error);
});

// 添加响应拦截器
http.interceptors.response.use(response => {
    // 对响应数据做点什么
    return response;
}, error => {
    // 捕获到状态码为403的错误
    console.log("status", error.response.status);
    if (error.response && error.response.status === 403) {
        EventBus.$emit('redirectToHome'); // 触发事件
        // 当前上下文不是Vue组件，可以采用其他方式提示用户，例如使用window.alert
        setTimeout(()=>{
            window.alert('未拥有访问该页面的权限！');
        },100)

        // 返回一个rejected promise，这样调用方会接收到错误
        return Promise.reject(new Error('Error: 403 Forbidden'));
    }
    // 其他错误处理
    return Promise.reject(error);
});

// 导出http实例
export default http;